﻿/****************************************************************************
 * 工 具 名:   HK_TargetCam（引入了QF框架）
 * 
 * 描    述:   Camera多目标切换管理工具，实现了控制Camera在多个Target之间切换；
 *             Target分为三种：RotTarget、AreaTarget、FollowTarget；
 *             切换至RotTarget目标点后，相机可围绕Target进行旋转、缩放操作；
 *             切换至AreaTarget目标点后，相机可在Target标识区域进行前后左右平移、缩放操作；
 *             切换至FollowTarget目标点后，相机可跟随目标点移动，且可在Target标识区域进行前后左右平移、缩放操作；
 *             可根据Target的枚举值、名称进行切换，切换时可更改Camera缩放速度、移动速度。
 *
 * 使用方式：    在本项目的 Architecture 中注册 IHK_TargetCamSystem；
                将 HK_TargetCamController 中的 Architecture 修改为本项目的 Architecture；
                将 TargetCamera 预设体，拖入场景中，替换默认Camera;
                根据需求，在场景中添加 RotTarget、AreaTarget、FollowTarget（可从预设体中拖入场景中）；
                编辑 HK_RotTargetItem、HK_AreaTargetItem、HK_FollowTargetITem 组件对应的：枚举标记、名称（可选）、默认距离等属性；
                调整 TargetCamera 物体上的 HK_TargetCamCtrl 组件，对其进行初始化参数编辑；
                若 HK_TargetCamCtrl 组件指定了 initTarget （初始化目标点）,则运行后 TargetCamera 会自动转换到 initTarget 对应的目标；
                发送 CMD_ChangeCamTarget 指令（并传入对应参数）进行 Camera 目标切换；
                发送 CMD_ChangeCamTarget 指令时，可传入 isFlash 及 isBlink 参数，控制 Camera “闪现”到对应目标；
                发送 CMD_ChangeCamTarget 指令时，可传入 delayTime 参数，控制 Camera 延时切换到对应目标；
                发送 CMD_SetCameraState 指令时，可传入 isCanCtrl 参数控制相机是否可移动、旋转、缩放；
                订阅 Event_SwitchTargetBegin 事件，当目标切换开始时接受到该事件；
                订阅 Event_SwitchTargetEnd 事件，当目标切换完成后接受到该事件；
                具体用法，可参考 Test_UseTargetCam 脚本。

 * 外部依赖：  Dotween、ActionKit
 *
 * 版    本：  V1.1
 * 创 建 者：  京产肠饭、谭潇杰
 * 创建时间：  2023/4/19
 * 链   接：  https://gitee.com/JingChanChangFan/hk_-unity-tools
*****************************************************************************/

using QFramework;

namespace HKTools
{
    public class HKTargetCam_Architecture : Architecture<HKTargetCam_Architecture>
    {
        protected override void Init()
        {
            this.RegisterSystem<IHK_TargetCamSystem>(new HK_TargetCamSystem());
        }
    }
}